import request from '@/utils/request'

/**
 * 通用API
 */
export default {
  /**
   * 获取字典数据
   * @param {string} dictType - 字典类型
   */
  getDictData(dictType) {
    return request({
      url: `/common/dict/data/${dictType}`,
      method: 'get'
    })
  },

  /**
   * 获取学期列表
   */
  getSemesters() {
    return request({
      url: '/common/semesters',
      method: 'get'
    })
  },

  /**
   * 获取当前学期
   */
  getCurrentSemester() {
    return request({
      url: '/common/semesters/current',
      method: 'get'
    })
  },

  /**
   * 获取公告列表
   * @param {Object} params - 查询参数
   */
  getNotices(params) {
    return request({
      url: '/common/notices',
      method: 'get',
      params
    })
  },

  /**
   * 获取验证码
   */
  getCaptcha() {
    return request({
      url: '/common/captcha',
      method: 'get'
    })
  },

  /**
   * 上传文件
   * @param {File} file - 文件对象
   * @param {Object} options - 上传选项
   */
  uploadFile(file, options = {}) {
    const formData = new FormData()
    formData.append('file', file)
    
    // 添加其他参数
    if (options.params) {
      Object.keys(options.params).forEach(key => {
        formData.append(key, options.params[key])
      })
    }
    
    return request({
      url: '/common/upload',
      method: 'post',
      data: formData,
      headers: {
        'Content-Type': 'multipart/form-data'
      },
      onUploadProgress: options.onProgress
    })
  },

  /**
   * 通用GET请求
   * @param {string} url - 请求URL
   * @param {Object} params - 查询参数
   */
  get(url, params) {
    return request({
      url,
      method: 'get',
      params
    })
  },

  /**
   * 通用POST请求
   * @param {string} url - 请求URL
   * @param {Object} data - 请求数据
   */
  post(url, data) {
    return request({
      url,
      method: 'post',
      data
    })
  }
} 